package com.iob.coin.bl.kgeditor;

import com.iob.coin.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Author: MengYuxin
 * @Date: 2021/3/12 21:46
 */
public interface KgEditorService {

    /**
     * 撤销
     * @param kgID  图谱的id
     * @param step  撤销的步数
     * @return
     */
    ResponseVO Cancel(int kgID,int step);

    /**
     * 添加节点
     * @param nodeVO
     * @return
     */
    ResponseVO addNode(NodeVO nodeVO);

    /**
     * 修改节点
     * @param nodeVO
     * @return
     */
    ResponseVO fixNode(NodeVO nodeVO);

    /**
     * 添加类型
     * @param typeVO
     * @return
     */
    ResponseVO addType(TypeVO typeVO);

    /**
     * 修改类型
     * @param typeVO
     * @return
     */
    ResponseVO fixType(TypeVO typeVO);

    /**
     * 删除类型
     * @param kgId
     * @param id  类型的id
     * @return
     */
    ResponseVO deleteType(int kgId,int id);

    /**
     * 添加连接
     * @param editLinkVO
     * @return
     */
    ResponseVO addLink(EditLinkVO editLinkVO);

    /**
     * 删除连接
     * @param kgId
     * @param id  连接的id
     * @return
     */
    ResponseVO deleteLink(int kgId,int id);

    /**
     * 修改连接
     * @param editLinkVO
     * @return
     */
    ResponseVO fixLink(EditLinkVO editLinkVO);

    /**
     * 删除节点
     * @param kgId
     * @param id  节点的id
     * @return
     */
    ResponseVO deleteNode(int kgId,int id);

    /**
     * 保存布局
     * @param kgId
     * @param nodeVOS  节点的信息
     * @return
     */
    ResponseVO saveLayout(int kgId, List<NodeVO>nodeVOS);

    /**
     * 取消布局
     * @param kgID
     * @return
     */
    ResponseVO cancelLayout(int kgID);

    /**
     * 导出文件
     * @param response
     * @param kgId
     * @return
     */
    ResponseVO outputFile(HttpServletResponse response, int kgId);

}
